package com.freemalll.merchant.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.freemalll.merchant.domain.dto.*;
import com.freemalll.merchant.domain.vo.*;
import com.freemalll.system.api.model.UserDto;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

public interface CollaborationApplyService {

    /**
     * 获取系统所有人员
     *
     * @return
     */
    List<UserDto> getResidentPersonnel();


    /**
     * 提交初审
     *
     * @param dto
     */
    SubmitPreliminaryReviewResultVo submitPreliminaryReview(SubmitPreliminaryReviewDto dto);

    /**
     * 身份证ocr识别
     *
     * @param file
     * @return
     */
    IdCardOrcVo idCardOcr(MultipartFile file);

    /**
     * 营业执照ocr识别
     *
     * @param file
     * @return
     */
    BusinessLicenseVo businessLicenseOcr(MultipartFile file);

    /**
     * 银行开户许可证ocr识别
     *
     * @param file
     * @return
     */
    MerAccountLicenseVo accountLicenseOcr(MultipartFile file);

    /**
     * 根据统一信用代码和merId查询营业执照信息
     *
     * @param creditCode 统一社会信用代码
     * @return
     */
    MerBusinessLicenseVo getMerAccountLicense(String creditCode) throws Exception;

    /**
     * 根据商户id获取商户信息
     *
     * @param merId
     * @return
     */
    MerchantInfoVo getMerInfoById(String merId);

    /**
     * 查询存量商户列表
     *
     * @return
     */
    List<Map<String, String>> getExistingMerchants(String merId);

    /**
     * 提交证照信息保存
     *
     * @param dto
     */
    void submitLicenseInfo(SubmitLicenseInfoDto dto);


    /**
     * 提交经营信息
     *
     * @param dto
     */
    void submitBusinessInfo(SubmitBusinessInfoDto dto);

    /**
     * 提交其他资料
     *
     * @param dto
     */
    SubmitOtherInfoDto submitOtherInfo(SubmitOtherInfoDto dto);

    /**
     * 取消申请
     *
     * @param merId
     */
    void withdraw(String merId);

    /**
     * 分页
     *
     * @param dto
     * @return
     */
    Page<CollaborationApplyVo> page(CollaborationApplyDto dto);

    /**
     * 统计
     *
     * @param dto
     * @return
     */
    CollaborationApplyStatisticsVo statistics(CollaborationApplyDto dto);

    /**
     * 保存附件
     *
     * @param dto
     */
    void submitSupplementaryDocuments(List<MerAttachDto> dto);

    /**
     * 获取商户费率IRR
     *
     * @param merId
     * @return
     */
    List<MerchantRateDto> getMerchantRateIRR(String merId, String sceneCategory);

    /**
     * 重新申请
     *
     * @param merId
     * @return
     */
    String reapply(String merId);

    /**
     * 校验商户简称是否存在
     *
     * @param merShortName
     * @return
     */
    void checkMerShortName(String merShortName, String merId);
}
